package com.osdp.sc.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.osdp.sc.dto.RoleDTO;
import com.osdp.sc.entity.ScRole;
import com.osdp.sc.vo.ScRoleVo;

import java.util.List;

public interface IScRoleService extends IService<ScRole> {
    /**
     * 角色信息查询分页
     * @param role ScRole
     * @param page Page<ScRole>
     * @return IPage<ScRole>
     */
    IPage<ScRole> pageList(ScRole role, Page<ScRole> page);

    /**
     * 查找用户所拥有的所有角色
     * @return List<ScRoleVo>
     */
    List<ScRole> queryAllRole(String roleName, String roleCode);

    /**
     * 根据用户id获取所有的角色
     * @param userId String
     * @return List<ScRoleVo>
     */
    List<ScRoleVo> queryRolesByUserId(String userId);

    /**
     * 根据岗位id获取所有的角色
     * @param positionId String
     * @return List<ScRoleVo>
     */
    List<ScRoleVo> queryRolesByPositionId(String positionId);

//    /**
//     * 保存
//     * @param name
//     * @param tenantId
//     * @return
//     */
//    public String saveTenantAdminRole(String name,String tenantId);

    /**
     * 角色新增
     * @param entity ScRole
     * @return boolean
     */
    boolean insertRole(ScRole entity);

    /**
     * 角色修改
     * @param entity ScRole
     * @return boolean
     */
    boolean updateRole(ScRole entity);

    /**
     * 角色删除
     * @param id String
     * @return boolean
     */
    boolean deleteRole(String id);

    /**
     * 批量删除
     * @param idList List<String>
     * @return boolean
     */
    boolean deleteBatcah(List<String> idList);

    /**
     * 根据用户Id得到所有角色，用于登录
     * @param userId String
     * @return List<RoleVo>
     */
    List<RoleDTO> getRolesByUserId(String userId);

    /**
     * 根据用户ID查询角色编码
     * @param userId
     * @return
     */
    List<String> getRoleCodeByUserId(String userId);


}
